{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Explore and create ML datasets\n",
    "\n",
    "In this notebook, we will explore data corresponding to taxi rides in New York City to build a Machine Learning model in support of a fare-estimation tool. The idea is to suggest a likely fare to taxi riders so that they are not surprised, and so that they can protest if the charge is much higher than expected.\n",
    "\n",
    "## Learning Objectives\n",
    "* Access and explore a public BigQuery dataset on NYC Taxi Cab rides\n",
    "* Visualize your dataset using the Seaborn library\n",
    "* Inspect and clean-up the dataset for future ML model training\n",
    "* Create a benchmark to judge future ML model performance off of\n",
    "\n",
    "Each learning objective will correspond to a __#TODO__ in the [student lab notebook](../labs/explore_data.ipynb) -- try to complete that notebook first before reviewing this solution notebook. \n",
    "\n",
    "Let's start off with the Python imports that we need."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "!sudo chown -R jupyter:jupyter /home/jupyter/training-data-analyst"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "!pip install tensorflow==2.1 --user"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Please ignore any compatibility warnings and errors\n",
    "Make sure to <b>restart</b> your kernel to ensure this change has taken place."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [],
   "source": [
    "from google.cloud import bigquery\n",
    "import seaborn as sns\n",
    "import matplotlib.pyplot as plt\n",
    "import pandas as pd\n",
    "import numpy as np\n",
    "import shutil"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<h3> Extract sample data from BigQuery </h3>\n",
    "\n",
    "The dataset that we will use is <a href=\"https://console.cloud.google.com/bigquery?p=nyc-tlc&d=yellow&t=trips&page=table\">a BigQuery public dataset</a>. Click on the link, and look at the column names. Switch to the Details tab to verify that the number of records is one billion, and then switch to the Preview tab to look at a few rows.\n",
    "\n",
    "Let's write a SQL query to pick up interesting fields from the dataset. It's a good idea to get the timestamp in a predictable format."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>pickup_datetime</th>\n",
       "      <th>pickup_longitude</th>\n",
       "      <th>pickup_latitude</th>\n",
       "      <th>dropoff_longitude</th>\n",
       "      <th>dropoff_latitude</th>\n",
       "      <th>passenger_count</th>\n",
       "      <th>trip_distance</th>\n",
       "      <th>tolls_amount</th>\n",
       "      <th>fare_amount</th>\n",
       "      <th>total_amount</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td>0</td>\n",
       "      <td>2010-02-23 21:59:00 UTC</td>\n",
       "      <td>-73.991735</td>\n",
       "      <td>40.749720</td>\n",
       "      <td>-74.036432</td>\n",
       "      <td>40.721977</td>\n",
       "      <td>2</td>\n",
       "      <td>4.76</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1</td>\n",
       "      <td>2010-02-11 15:34:00 UTC</td>\n",
       "      <td>-73.814107</td>\n",
       "      <td>40.783290</td>\n",
       "      <td>-73.814107</td>\n",
       "      <td>40.783290</td>\n",
       "      <td>1</td>\n",
       "      <td>0.00</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>2</td>\n",
       "      <td>2010-02-15 16:32:26 UTC</td>\n",
       "      <td>-73.805962</td>\n",
       "      <td>40.660588</td>\n",
       "      <td>-73.790219</td>\n",
       "      <td>40.643711</td>\n",
       "      <td>1</td>\n",
       "      <td>1.70</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>3</td>\n",
       "      <td>2015-01-11 00:45:11 UTC</td>\n",
       "      <td>-73.937401</td>\n",
       "      <td>40.758141</td>\n",
       "      <td>-73.937416</td>\n",
       "      <td>40.758152</td>\n",
       "      <td>1</td>\n",
       "      <td>0.00</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>4</td>\n",
       "      <td>2015-03-03 07:05:03 UTC</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-73.937386</td>\n",
       "      <td>40.758125</td>\n",
       "      <td>1</td>\n",
       "      <td>0.00</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>5</td>\n",
       "      <td>2010-02-20 10:49:49 UTC</td>\n",
       "      <td>-73.972535</td>\n",
       "      <td>40.742314</td>\n",
       "      <td>-73.973257</td>\n",
       "      <td>40.744575</td>\n",
       "      <td>1</td>\n",
       "      <td>0.20</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>6</td>\n",
       "      <td>2015-01-30 12:31:51 UTC</td>\n",
       "      <td>-73.937531</td>\n",
       "      <td>40.758083</td>\n",
       "      <td>-73.937531</td>\n",
       "      <td>40.758102</td>\n",
       "      <td>1</td>\n",
       "      <td>0.00</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>7</td>\n",
       "      <td>2010-02-05 19:41:58 UTC</td>\n",
       "      <td>-73.994528</td>\n",
       "      <td>40.755783</td>\n",
       "      <td>-73.782418</td>\n",
       "      <td>40.648799</td>\n",
       "      <td>4</td>\n",
       "      <td>20.40</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>8</td>\n",
       "      <td>2015-02-21 13:52:50 UTC</td>\n",
       "      <td>-73.937576</td>\n",
       "      <td>40.758129</td>\n",
       "      <td>-73.937599</td>\n",
       "      <td>40.758129</td>\n",
       "      <td>1</td>\n",
       "      <td>0.00</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>9</td>\n",
       "      <td>2010-02-02 17:42:18 UTC</td>\n",
       "      <td>-73.961086</td>\n",
       "      <td>40.779176</td>\n",
       "      <td>-73.961455</td>\n",
       "      <td>40.779421</td>\n",
       "      <td>1</td>\n",
       "      <td>0.30</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "           pickup_datetime  pickup_longitude  pickup_latitude  \\\n",
       "0  2010-02-23 21:59:00 UTC        -73.991735        40.749720   \n",
       "1  2010-02-11 15:34:00 UTC        -73.814107        40.783290   \n",
       "2  2010-02-15 16:32:26 UTC        -73.805962        40.660588   \n",
       "3  2015-01-11 00:45:11 UTC        -73.937401        40.758141   \n",
       "4  2015-03-03 07:05:03 UTC          0.000000         0.000000   \n",
       "5  2010-02-20 10:49:49 UTC        -73.972535        40.742314   \n",
       "6  2015-01-30 12:31:51 UTC        -73.937531        40.758083   \n",
       "7  2010-02-05 19:41:58 UTC        -73.994528        40.755783   \n",
       "8  2015-02-21 13:52:50 UTC        -73.937576        40.758129   \n",
       "9  2010-02-02 17:42:18 UTC        -73.961086        40.779176   \n",
       "\n",
       "   dropoff_longitude  dropoff_latitude  passenger_count  trip_distance  \\\n",
       "0         -74.036432         40.721977                2           4.76   \n",
       "1         -73.814107         40.783290                1           0.00   \n",
       "2         -73.790219         40.643711                1           1.70   \n",
       "3         -73.937416         40.758152                1           0.00   \n",
       "4         -73.937386         40.758125                1           0.00   \n",
       "5         -73.973257         40.744575                1           0.20   \n",
       "6         -73.937531         40.758102                1           0.00   \n",
       "7         -73.782418         40.648799                4          20.40   \n",
       "8         -73.937599         40.758129                1           0.00   \n",
       "9         -73.961455         40.779421                1           0.30   \n",
       "\n",
       "   tolls_amount  fare_amount  total_amount  \n",
       "0           0.0          0.0           0.0  \n",
       "1           0.0          0.0           0.0  \n",
       "2           0.0          0.0           0.0  \n",
       "3           0.0          0.0           0.0  \n",
       "4           0.0          0.0           0.0  \n",
       "5           0.0          0.0           0.0  \n",
       "6           0.0          0.0           0.0  \n",
       "7           0.0          0.0           0.0  \n",
       "8           0.0          0.0           0.0  \n",
       "9           0.0          0.0           0.0  "
      ]
     },
     "execution_count": 29,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "%%bigquery\n",
    "  SELECT\n",
    "    FORMAT_TIMESTAMP(\"%Y-%m-%d %H:%M:%S %Z\", pickup_datetime) AS pickup_datetime,\n",
    "    pickup_longitude, pickup_latitude, dropoff_longitude,\n",
    "    dropoff_latitude, passenger_count, trip_distance, tolls_amount, \n",
    "    fare_amount, total_amount \n",
    "  FROM `nyc-tlc.yellow.trips`\n",
    "  LIMIT 10"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Let's increase the number of records so that we can do some neat graphs.  There is no guarantee about the order in which records are returned, and so no guarantee about which records get returned if we simply increase the LIMIT. To properly sample the dataset, let's use the HASH of the pickup time and return 1 in 100,000 records -- because there are 1 billion records in the data, we should get back approximately 10,000 records if we do this.\n",
    "\n",
    "We will also store the BigQuery result in a Pandas dataframe named \"trips\""
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [],
   "source": [
    "%%bigquery trips\n",
    "  SELECT\n",
    "    FORMAT_TIMESTAMP(\"%Y-%m-%d %H:%M:%S %Z\", pickup_datetime) AS pickup_datetime,\n",
    "    pickup_longitude, pickup_latitude, \n",
    "    dropoff_longitude, dropoff_latitude,\n",
    "    passenger_count,\n",
    "    trip_distance,\n",
    "    tolls_amount,\n",
    "    fare_amount,\n",
    "    total_amount\n",
    "  FROM\n",
    "    `nyc-tlc.yellow.trips`\n",
    "  WHERE\n",
    "    ABS(MOD(FARM_FINGERPRINT(CAST(pickup_datetime AS STRING)), 100000)) = 1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "10789\n"
     ]
    }
   ],
   "source": [
    "print(len(trips))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>pickup_datetime</th>\n",
       "      <th>pickup_longitude</th>\n",
       "      <th>pickup_latitude</th>\n",
       "      <th>dropoff_longitude</th>\n",
       "      <th>dropoff_latitude</th>\n",
       "      <th>passenger_count</th>\n",
       "      <th>trip_distance</th>\n",
       "      <th>tolls_amount</th>\n",
       "      <th>fare_amount</th>\n",
       "      <th>total_amount</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td>0</td>\n",
       "      <td>2012-03-30 18:28:20 UTC</td>\n",
       "      <td>-73.976148</td>\n",
       "      <td>40.776154</td>\n",
       "      <td>-74.010156</td>\n",
       "      <td>40.715113</td>\n",
       "      <td>1</td>\n",
       "      <td>5.70</td>\n",
       "      <td>0.00</td>\n",
       "      <td>17.3</td>\n",
       "      <td>18.80</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1</td>\n",
       "      <td>2013-08-21 23:14:38 UTC</td>\n",
       "      <td>-73.783667</td>\n",
       "      <td>40.648622</td>\n",
       "      <td>-73.918375</td>\n",
       "      <td>40.700288</td>\n",
       "      <td>2</td>\n",
       "      <td>10.30</td>\n",
       "      <td>0.00</td>\n",
       "      <td>32.0</td>\n",
       "      <td>37.00</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>2</td>\n",
       "      <td>2011-06-04 02:52:10 UTC</td>\n",
       "      <td>-73.984681</td>\n",
       "      <td>40.769893</td>\n",
       "      <td>-74.007312</td>\n",
       "      <td>40.705326</td>\n",
       "      <td>1</td>\n",
       "      <td>5.30</td>\n",
       "      <td>0.00</td>\n",
       "      <td>15.3</td>\n",
       "      <td>16.30</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>3</td>\n",
       "      <td>2014-05-20 23:09:00 UTC</td>\n",
       "      <td>-73.995203</td>\n",
       "      <td>40.727307</td>\n",
       "      <td>-73.948775</td>\n",
       "      <td>40.813487</td>\n",
       "      <td>1</td>\n",
       "      <td>10.31</td>\n",
       "      <td>0.00</td>\n",
       "      <td>33.5</td>\n",
       "      <td>38.00</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>4</td>\n",
       "      <td>2013-12-21 06:21:00 UTC</td>\n",
       "      <td>-73.949725</td>\n",
       "      <td>40.827642</td>\n",
       "      <td>-74.005040</td>\n",
       "      <td>40.721567</td>\n",
       "      <td>6</td>\n",
       "      <td>8.71</td>\n",
       "      <td>0.00</td>\n",
       "      <td>27.0</td>\n",
       "      <td>30.50</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>5</td>\n",
       "      <td>2011-12-15 23:27:26 UTC</td>\n",
       "      <td>-73.862671</td>\n",
       "      <td>40.768860</td>\n",
       "      <td>-73.983170</td>\n",
       "      <td>40.696372</td>\n",
       "      <td>1</td>\n",
       "      <td>10.00</td>\n",
       "      <td>0.00</td>\n",
       "      <td>22.5</td>\n",
       "      <td>27.00</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>6</td>\n",
       "      <td>2015-02-17 21:29:49 UTC</td>\n",
       "      <td>-73.976730</td>\n",
       "      <td>40.754822</td>\n",
       "      <td>-73.946434</td>\n",
       "      <td>40.725193</td>\n",
       "      <td>2</td>\n",
       "      <td>7.12</td>\n",
       "      <td>0.00</td>\n",
       "      <td>24.0</td>\n",
       "      <td>30.36</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>7</td>\n",
       "      <td>2014-10-28 06:59:59 UTC</td>\n",
       "      <td>-73.953121</td>\n",
       "      <td>40.791453</td>\n",
       "      <td>-73.974214</td>\n",
       "      <td>40.739858</td>\n",
       "      <td>1</td>\n",
       "      <td>4.70</td>\n",
       "      <td>0.00</td>\n",
       "      <td>19.5</td>\n",
       "      <td>25.00</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>8</td>\n",
       "      <td>2014-10-06 15:16:00 UTC</td>\n",
       "      <td>-73.980130</td>\n",
       "      <td>40.760910</td>\n",
       "      <td>-73.861730</td>\n",
       "      <td>40.768330</td>\n",
       "      <td>2</td>\n",
       "      <td>11.47</td>\n",
       "      <td>5.33</td>\n",
       "      <td>36.5</td>\n",
       "      <td>47.33</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>9</td>\n",
       "      <td>2014-12-08 21:50:00 UTC</td>\n",
       "      <td>-73.870867</td>\n",
       "      <td>40.773782</td>\n",
       "      <td>-74.003297</td>\n",
       "      <td>40.708215</td>\n",
       "      <td>2</td>\n",
       "      <td>11.81</td>\n",
       "      <td>0.00</td>\n",
       "      <td>33.5</td>\n",
       "      <td>37.50</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "           pickup_datetime  pickup_longitude  pickup_latitude  \\\n",
       "0  2012-03-30 18:28:20 UTC        -73.976148        40.776154   \n",
       "1  2013-08-21 23:14:38 UTC        -73.783667        40.648622   \n",
       "2  2011-06-04 02:52:10 UTC        -73.984681        40.769893   \n",
       "3  2014-05-20 23:09:00 UTC        -73.995203        40.727307   \n",
       "4  2013-12-21 06:21:00 UTC        -73.949725        40.827642   \n",
       "5  2011-12-15 23:27:26 UTC        -73.862671        40.768860   \n",
       "6  2015-02-17 21:29:49 UTC        -73.976730        40.754822   \n",
       "7  2014-10-28 06:59:59 UTC        -73.953121        40.791453   \n",
       "8  2014-10-06 15:16:00 UTC        -73.980130        40.760910   \n",
       "9  2014-12-08 21:50:00 UTC        -73.870867        40.773782   \n",
       "\n",
       "   dropoff_longitude  dropoff_latitude  passenger_count  trip_distance  \\\n",
       "0         -74.010156         40.715113                1           5.70   \n",
       "1         -73.918375         40.700288                2          10.30   \n",
       "2         -74.007312         40.705326                1           5.30   \n",
       "3         -73.948775         40.813487                1          10.31   \n",
       "4         -74.005040         40.721567                6           8.71   \n",
       "5         -73.983170         40.696372                1          10.00   \n",
       "6         -73.946434         40.725193                2           7.12   \n",
       "7         -73.974214         40.739858                1           4.70   \n",
       "8         -73.861730         40.768330                2          11.47   \n",
       "9         -74.003297         40.708215                2          11.81   \n",
       "\n",
       "   tolls_amount  fare_amount  total_amount  \n",
       "0          0.00         17.3         18.80  \n",
       "1          0.00         32.0         37.00  \n",
       "2          0.00         15.3         16.30  \n",
       "3          0.00         33.5         38.00  \n",
       "4          0.00         27.0         30.50  \n",
       "5          0.00         22.5         27.00  \n",
       "6          0.00         24.0         30.36  \n",
       "7          0.00         19.5         25.00  \n",
       "8          5.33         36.5         47.33  \n",
       "9          0.00         33.5         37.50  "
      ]
     },
     "execution_count": 32,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# We can slice Pandas dataframes as if they were arrays\n",
    "trips[:10]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<h3> Exploring data </h3>\n",
    "\n",
    "Let's explore this dataset and clean it up as necessary. We'll use the Python Seaborn package to visualize graphs and Pandas to do the slicing and filtering."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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DOb9mZQSv/71r3HNNdeUsglEREREy07F1qC9/PLLaGpqwllnnZU5dvLkSWzbtg11dXW49dZbcfHFF8/5OKoq0NDgK2FL0+dRynIeKi/2a/Vi31Yn9mv1Yt/mqliAtn///pzRs5UrV+L5559HY2Mj3njjDXzta1/DgQMHcqZA8zEMWZbF+w0NPm4SqELs1+rFvq1O7NfqVSt9u2JFoKjbVSTNRjKZxLPPPourr746c8zlcqGxsREAcP7552PNmjWZzQREREREtaQiAVpXVxfWrVuHlpaWzLFwOAzDMAAAvb29OH78ONramAyWiIiIak9Jpzh37tyJI0eOYGRkBJs3b8bNN9+Mz372s3jqqaewdevWnNt2d3fju9/9LhwOBxRFwX333YeGhoZSNo+IiIjIloSUUla6EYuh6wbXoNGCsV+rF/u2OrFfq1et9K2t16ARERER0ewYoBERERHZDAM0IiIiIpthgEZERERkMwzQiIiIiGyGARoRERGRzTBAIyIiIrIZBmhERERENsMAjYiIiMhmGKARERER2QwDNCIiIiKbYYBGREREZDMM0IiIiIhshgEaERERkc0wQCMiIiKyGQZoRERERDbDAI2IiIjIZhigEREREdkMAzQiIiIim2GARkRERGQzDNCIiIiIbIYBGhEREZHNMEAjIiIishkGaEREREQ2wwCNiIiIyGYYoBERERHZDAM0IiIiIpthgEZERERkMwzQiIiIiGyGARoRERGRzTBAIyIiIrIZBmhERERENsMAjYiIiMhmGKARERER2QwDNCIiIiKbYYBGREREZDMM0IiIiIhshgEaERERkc0wQCMiIiKyGQZoRERERDbDAI2IiIjIZhigEREREdkMAzQiIiIimylpgHb33Xdj48aNuOaaazLHvve97+HSSy/Ftddei2uvvRaHDh3K/OyHP/whrrzySvz1X/81fvOb35SyaURERES25Sjlg1933XX4whe+gDvvvDPn+I033ogvfvGLOceOHj2KAwcO4MCBAxgYGMCOHTvwn//5n1BVtZRNJCIiIrKdko6gdXR0IBgMFnXbgwcPYuvWrXC5XGhra8PatWvx+uuvl7J5RERERLZU0hG02fzsZz/D3r17cf755+Ouu+5CMBjEwMAANmzYkLnNqlWrMDAwMOdjqapAQ4OvlM1NnUcpy3movNiv1Yt9W53Yr9WL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Ba644gq8+uqruPDCC8vVJiIiIqKaVjBAS1u7di1+8IMf4L333kMymcwcf+ihh0rWMCIiIqJaVVSA9tWvfhUXXXQRNm7cCFVVS90mIiIioppWVIA2OTmJ22+/vdRtISIiIiIUmWbj4x//OA4dOlTqthARERERihxBe/zxx/HDH/4QLpcLDocDUkoIIfD73/++1O0jIiIiqjlFBWivvvpqqdtBRERERClFBWjd3d15j3d0dCxpY4iIiIioyADtxz/+ceb7RCKB119/Heeddx4ef/zxkjWMiIiIqFYVFaD94Ac/yPn/qVOn8OCDD5akQURERES1rqhdnNO1tLTgL3/5y1K3hYiIiIhQ5AjaAw88ACEEAMA0Tbz11lv44Ac/WNKGEREREdWqogK0888/P/O9qqrYunUrLrroopI1ioiIiKiWFRWgfeYzn4GmaTh+/DgAoL29vZRtIiIiIqppRQVoL730Eu666y6sXr0aUkqcOnUKjzzyCNNsEBEREZVAUQHaI488gh//+MdYt24dAKCnpwf/8A//gCeffLKkjSMiIiKqRUXt4tR1PROcAdYUp67rJWsUERERUS0repPAPffcg09/+tMAgF/96lc5GweIiIiIaOkUFaDdd999+NnPfobOzk4AwMUXX4zPf/7zJW0YERERUa0SUkpZqge/++678cILL6CpqQn79+8HAIyOjuK2227De++9h9WrV2P37t0IBoOQUuKf/umfcOjQIXg8Hjz88MM477zz5jyHrhsYHY2V6ilkNDT4ynIeKi/2a/Vi31Yn9mv1qpW+XbEiUNTtilqD9vzzz2Pbtm34yEc+gg9/+MO48MIL8eEPf3jO+1133XV47LHHco7t2bMHGzduxDPPPIONGzdiz549AIDDhw/j+PHjeOaZZ/DAAw/gm9/8ZlFPgIiIiKjaFBWgPfjgg3j44Yfx0ksv4fe//z1effVV/P73v5/zfh0dHQgGgznHDh48iG3btgEAtm3bhueeey7nuBACF1xwAcbHxzE4ODjf50NERES07BUVoLW0tODcc8/NlHtajOHhYaxcuRIAsGLFCgwPDwMABgYG0NLSknPOgYGBRZ+PiIiIaLkpapPA7bffji9/+cv4yEc+ApfLlTm+Y8eORZ1cCLHooE9VBRoafIt6jOLOo5TlPFRe7Nfqxb6tTuzX6sW+zVVUgLZ79274fD4k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RQXBYJDXX3+duXPnJrpZMoTmzp3Ljh07ANixYwfz5s1LcItkoBzH4aGHHqKkpIRVq1bFnlffjny1tbU0NDQA0NbWxt69e7nwwguZMWMGb7/9NgB/+tOf9Hd5hFm/fj179uxh9+7dPPHEE8ycOZPHH39c/dqF4TiOk+hGJLP333+fxx57DNu2ufHGG7nzzjsT3SQZpHvvvZePPvqIuro68vPzueuuu7jmmmu4++67OXbsGOPGjeMXv/gFOTk5iW6qDMBf//pXvvvd73LRRRfF1rPce++9XHbZZerbEe7TTz+ltLQU27ZxHIdFixaxdu1aKioquOeee6ivr2fKlCls3LgRj8eT6ObKIJSVlfHss8/y9NNPq1+7UEATERERSTKa4hQRERFJMgpoIiIiIklGAU1EREQkySigiYiIiCQZBTQRERGRJKOAJiJJqaGhgRdffLHX12+55Zaz/o6XX36ZDRs2ALBt27ZY3bSelJWVceDAgbP+ThGR/lBAE5Gk1NDQwLZt27o9Hw6HAXjppZeG9PtuvfXW2OHqPfnoo484ePDgkH6niEhvdNSTiCSlxx9/nM8//5ylS5ficrnwer1kZWVRXl7O22+/zRVXXMHBgwcpKyvjySefxO/389lnnzFjxgx++MMfxorWdvXHP/6RLVu2kJmZyVe+8pVYIcxNmzbh8/lYvXo1zz//PC+99BKWZTFx4kTWr1/PSy+9hGmavPLKKzz88MM0NDTw1FNPEQqFyMnJYePGjRQUFLBp0yaqqqqorKykqqqKlStXsmLFCiB6osEzzzyDYRhMnjyZn//859TW1vLII49QVVUFwIMPPsi0adOG55csIklLAU1EktL69ev55z//yc6dOykrK2PNmjW8+uqrFBcXd7v20KFDvPHGG4wbN47bb7+dd955h0WLFnW77sSJE2zatImXX36ZjIwMVqxYwcUXX9ztui1btrB79248Hg8NDQ1kZWVxyy23xAIcQH19Pdu3b8cwDH7/+9+zdetWSktLASgvL+f555+nqamJa6+9lltvvZWjR4/y1FNPsW3bNvLy8jh16hQAjz76KCtXruTKK6+kqqqK1atX8+abbw7lr1JERiAFNBEZEaZOndpjOAO47LLLYq8tWbKE/fv39xjQDh06xNe+9rXYwemLFy/m6NGj3a6bPHky9913H/PmzeOaa67p8TuPHz/OPffcwxdffEEwGGT8+PGx1+bMmYPH4yEvL4+8vDxqamr48MMPWbRoUey7O46d2rt3L4cPH469t6mpiebmZvx+fz9+KyKSqhTQRGRE8Pl8vb5mGEbcxwO1ZcsW9u3bx3vvvcevfvUrXn311W7X/PjHP+a2225j3rx5lJWVsXnz5thrZ54faFlWbN1cTyKRCNu3b8fr9Z5Vm0UktWiTgIgkJb/fT3Nzc7+uPXToEBUVFUQiEd58881e13Bddtll7Nu3j7q6OkKhEG+99Va3ayKRCMeOHWPmzJncd999NDY20tLS0q09jY2NFBUVAcTd/dlh5syZvPXWW9TV1QHEpjivuuoqXnjhhdh1n3zySb9+ZhFJbRpBE5GklJuby1e/+lWuu+46vF4vBQUFvV47depUfvSjH8U2CcyfP7/H6woLC1m7di233HILmZmZTJkypds1tm1z//3309TUhOM4rFixgqysLL75zW+ybt06du3axcMPP8zatWv53ve+R3Z2NjNmzKCysjLuzzNp0iTuuOMOli9fjmmaXHzxxfz0pz/loYceYsOGDVx//fXYts2VV14ZK/0hIqOX4TiOk+hGiIgMIv2FJQAAAGtJREFUVllZGc8++yxPP/10opsiIjJkNMUpIiIikmQ0giYiKemmm24iGAx2eu5nP/sZkydPTlCLRET6TwFNREREJMloilNEREQkySigiYiIiCQZBTQRERGRJKOAJiIiIpJkFNBEREREksz/AblM4OR5nDzZAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<Figure size 720x576 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "ax = sns.regplot(x=\"trip_distance\", y=\"fare_amount\", fit_reg=False, ci=None, truncate=True, data=trips)\n",
    "ax.figure.set_size_inches(10, 8)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Hmm ... do you see something wrong with the data that needs addressing?\n",
    "\n",
    "It appears that we have a lot of invalid data that is being coded as zero distance and some fare amounts that are definitely illegitimate. Let's remove them from our analysis. We can do this by modifying the BigQuery query to keep only trips longer than zero miles and fare amounts that are at least the minimum cab fare ($2.50).\n",
    "\n",
    "Note the extra WHERE clauses."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [],
   "source": [
    "%%bigquery trips\n",
    "  SELECT\n",
    "    FORMAT_TIMESTAMP(\"%Y-%m-%d %H:%M:%S %Z\", pickup_datetime) AS pickup_datetime,\n",
    "    pickup_longitude, pickup_latitude, \n",
    "    dropoff_longitude, dropoff_latitude,\n",
    "    passenger_count,\n",
    "    trip_distance,\n",
    "    tolls_amount,\n",
    "    fare_amount,\n",
    "    total_amount\n",
    "  FROM\n",
    "    `nyc-tlc.yellow.trips`\n",
    "  WHERE\n",
    "    ABS(MOD(FARM_FINGERPRINT(CAST(pickup_datetime AS STRING)), 100000)) = 1\n",
    "    AND trip_distance > 0 AND fare_amount >= 2.5"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "10716\n"
     ]
    }
   ],
   "source": [
    "print(len(trips))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAmgAAAHkCAYAAACKddN3AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4zLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvnQurowAAIABJREFUeJzs3XuQXGWdP/73c87p07eZ6bnlwoRJnAiya0Dkh6OVCMEi4ipEiWyBi0V2SenXn+jiSrZAU/pDwe8KxG9tgbjFgrFURrQqq0i+JquLZLnpYDJEFgrES8gk6TDJDDM9l56+nsvz++N0d7rn1j2Xnj7d/X5VUTPp6cvT/XTPvHkun0dIKSWIiIiIyDWUSjeAiIiIiAoxoBERERG5DAMaERERkcswoBERERG5DAMaERERkcswoBERERG5DAMaERERkcswoBERERG5DAMaERERkctolW7AYtm2Dcsq/2EIqiqW5XFoebFfaxf7tjaxX2tXvfStx6OWdL2qD2iWJTE2Fi/74zQ3B5blcWh5sV9rF/u2NrFfa1e99O2KFY0lXY9TnEREREQuw4BGRERE5DIMaEREREQuw4BGRERE5DIMaEREREQuw4BGRERE5DIMaEREREQuw4BGRERE5DIMaEREREQuw4BGRERE5DIMaEREREQuw4BGRERE5DIMaEREREQuw4BGRERE5DIMaEREREQuo1W6AdWgtz+Cn7z0Kk6OxNAR8mF7dyc2dbVWullERERUoziCVkRvfwS7Dx7FW9EUmnwahmNp7D54FL39kUo3jYiIiGoUA1oRPX1heFQBv65CCAG/R4VHFejpC1e6aURERFSjGNCKGBhPwqcVvkw+TcHAeLJCLSIiIqJax4BWREfIh6RpF1yWNG10hHwVahERERHVOga0IrZ3d8KwJBJpC1JKJAwLhiWxvbuz0k0jIiKiGsWAVsSmrlbcseU8rGj0YiJpoj2o444t53EXJxEREZUNy2yUYFNXK66+5FyMjcUr3RQiIiKqA2UNaLt27cIzzzyDtrY27N+/HwDwxS9+Ef39/QCAaDSKxsZG7Nu3D6dOncLVV1+Nrq4uAMDFF1+Mu+++u5zNIyIiInKlsga06667DjfddBO+9KUv5S67//77c9/fe++9aGhoyP177dq12LdvXzmbREREROR6ZV2D1t3djVAoNOPPpJT45S9/ia1bt5azCURERERVp2KbBF588UW0tbXhbW97W+6yU6dOYdu2bbjpppvw4osvVqppRERERBVVsU0C+/fvLxg9W7lyJZ5++mm0tLTg1Vdfxec//3kcOHCgYAp0Jqoq0NwcKHdzoarKsjwOLS/2a+1i39Ym9mvtYt8WqkhAM00Tv/71r/H444/nLtN1HbquAwAuvPBCrF27Fv39/bjooovmvC/Lksuyu7K5OcBdnDWI/Vq72Le1if1au+qlb1esaCzpehWZ4uzt7cX69euxevXq3GWRSASWZQEAwuEwjh8/js5OFoMlIiKi+lPWEbSdO3fi8OHDGB0dxebNm3Hrrbfi+uuvx3/+53/immuuKbhuX18fvv3tb0PTNCiKgrvuugvNzc3lbB4RERGRKwkppax0IxbDMCxOcdKCsV9rF/u2NrFfa1e99K2rpziJiIiIaHYMaEREREQuw4BGRERE5DIMaEREREQuw4BGRERE5DIMaEREREQuw4BGRERE5DIMaEREREQuw4BGRERE5DIMaEREREQuw4BGRERE5DIMaEREREQuw4BGRERE5DIMaEREREQuw4BGRERE5DIMaEREREQuw4BGRERE5DIMaEREREQuw4BGRERE5DIMaEREREQuw4BGRERE5DIMaEREREQuw4BGRERE5DIMaEREREQuw4BGRERE5DIMaEREREQuw4BGRERE5DIMaEREREQuw4BGRERE5DIMaEREREQuw4BGRERE5DIMaEREREQuw4BGRERE5DIMaEREREQuw4BGRERE5DIMaEREREQuw4BGRERE5DIMaEREREQuw4BGRERE5DIMaEREREQuw4BGRERE5DIMaEREREQuw4BGRERE5DIMaEREREQuw4BGRERE5DIMaEREREQuw4BGRERE5DJlDWi7du3Cxo0bsXXr1txlDz74IC6//HJce+21uPbaa/Hss8/mfvbwww/jqquuwt/8zd/g+eefL2fTiIiIiFxLK+edX3fddbjpppvwpS99qeDym2++GZ/61KcKLjt69CgOHDiAAwcOYHBwEDt27MB//dd/QVXVcjaRiIiIyHXKOoLW3d2NUChU0nUPHjyIa665Brquo7OzE+vWrcMrr7xSzuYRERERuVJF1qA99thj+OhHP4pdu3ZhfHwcADA4OIjVq1fnrrNq1SoMDg5WonlE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w4BGRERE5DIMaEREREQuw4BGRERE5DIMaEREREQuw4BGRERE5DIMaEREREQuw4BGRERE5DIMaEREREQuw4BGRERE5DIMaEREREQuw4BGRERE5DIMaEREREQuw4BGRERE5DIMaEREREQuw4BGRERE5DIlBbRwOFzSZURERES0eCUFtC984QvTLvunf/qnJW8MEREREQHaXD984403cPToUUSjUTz55JO5yycnJ5FKpcreOCIiIqJ6NGdA6+/vxzPPPINoNIqnn346d3kwGMQ3vvGNsjeOiIiIqB7NGdA++MEP4oMf/CBeeuklXHLJJcvVJiIiIqK6NmdAy1q3bh3+/d//HW+++SZM08xdfs8998x5u127duGZZ55BW1sb9u/fDwAYGxvDbbfdhjfffBNr1qzB/fffj1AoBCkl/uVf/gXPPvssfD4f7r33XmzYsGERT42IiIioOpW0SeBzn/scotEoNm7ciA984AO5/4q57rrrsGfPnoLLHnnkEWzcuBFPPvkkNm7ciEceeQQA8Nxzz+H48eN48skn8Y1vfANf//rX5/1kiIiIiGpBSSNoiUQCt99++7zvvLu7G6dOnSq47ODBg+jp6QEAbNu2Ddu3b8ftt9+OgwcPYtu2bRBC4N3vfjcmJiYwNDSElStXzvtxiYiIiKpZSSNoH/jAB/Dss88uyQOOjIzkQteKFSswMjICABgcHMTq1atz11u9ejUGBweX5DGJiIiIqklJI2iPPvooHn74Yei6Dk3TIKWEEAK///3vF/XgQggIIRZ1H6oq0NwcWNR9lPY4yrI8Di0v9mvtYt/WJvZr7WLfFiopoL300ktL9oBtbW25qcuhoSG0trYCAFatWoUzZ87krnfmzBmsWrWq6P1ZlsTYWHzJ2jeb5ubAsjwOLS/2a+1i39Ym9mvtqpe+XbGisaTrlRTQ+vr6Zry8u7u79BZlXHnllXjiiSfwmc98Bk888QS2bNmSu/xHP/oRrrnmGrz88stobGzk+jMiIiKqSyUFtO9973u571OpFF555RVs2LABjz766Jy327lzJw4fPozR0VFs3rwZt956Kz7zmc/gi1/8In7605+io6MD999/PwDgiiuuwLPPPourrroKfr8f3/zmNxfxtIiIiIiql5BSyvne6PTp0/jmN7+JBx98sBxtmhfDsDjFSQvGfq1d7NvaxH6tXfXSt6VO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\n",
      "text/plain": [
       "<Figure size 720x576 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "ax = sns.regplot(x=\"trip_distance\", y=\"fare_amount\", fit_reg=False, ci=None, truncate=True, data=trips)\n",
    "ax.figure.set_size_inches(10, 8)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "What's up with the streaks around 45 dollars and 50 dollars?  Those are fixed-amount rides from JFK and La Guardia airports into anywhere in Manhattan, i.e. to be expected. Let's list the data to make sure the values look reasonable.\n",
    "\n",
    "Let's also examine whether the toll amount is captured in the total amount."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>pickup_datetime</th>\n",
       "      <th>pickup_longitude</th>\n",
       "      <th>pickup_latitude</th>\n",
       "      <th>dropoff_longitude</th>\n",
       "      <th>dropoff_latitude</th>\n",
       "      <th>passenger_count</th>\n",
       "      <th>trip_distance</th>\n",
       "      <th>tolls_amount</th>\n",
       "      <th>fare_amount</th>\n",
       "      <th>total_amount</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td>47</td>\n",
       "      <td>2012-02-27 09:19:10 UTC</td>\n",
       "      <td>-73.874431</td>\n",
       "      <td>40.774011</td>\n",
       "      <td>-73.983967</td>\n",
       "      <td>40.744082</td>\n",
       "      <td>1</td>\n",
       "      <td>11.6</td>\n",
       "      <td>4.8</td>\n",
       "      <td>27.7</td>\n",
       "      <td>38.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "            pickup_datetime  pickup_longitude  pickup_latitude  \\\n",
       "47  2012-02-27 09:19:10 UTC        -73.874431        40.774011   \n",
       "\n",
       "    dropoff_longitude  dropoff_latitude  passenger_count  trip_distance  \\\n",
       "47         -73.983967         40.744082                1           11.6   \n",
       "\n",
       "    tolls_amount  fare_amount  total_amount  \n",
       "47           4.8         27.7          38.0  "
      ]
     },
     "execution_count": 37,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "tollrides = trips[trips['tolls_amount'] > 0]\n",
    "tollrides[tollrides['pickup_datetime'] == '2012-02-27 09:19:10 UTC']"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Looking a few samples above, it should be clear that the total amount reflects fare amount, toll and tip somewhat arbitrarily -- this is because when customers pay cash, the tip is not known.  So, we'll use the sum of fare_amount + tolls_amount as what needs to be predicted.  Tips are discretionary and do not have to be included in our fare estimation tool.\n",
    "\n",
    "Let's also look at the distribution of values within the columns."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>pickup_longitude</th>\n",
       "      <th>pickup_latitude</th>\n",
       "      <th>dropoff_longitude</th>\n",
       "      <th>dropoff_latitude</th>\n",
       "      <th>passenger_count</th>\n",
       "      <th>trip_distance</th>\n",
       "      <th>tolls_amount</th>\n",
       "      <th>fare_amount</th>\n",
       "      <th>total_amount</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td>count</td>\n",
       "      <td>10716.000000</td>\n",
       "      <td>10716.000000</td>\n",
       "      <td>10716.000000</td>\n",
       "      <td>10716.000000</td>\n",
       "      <td>10716.000000</td>\n",
       "      <td>10716.000000</td>\n",
       "      <td>10716.000000</td>\n",
       "      <td>10716.000000</td>\n",
       "      <td>10716.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>mean</td>\n",
       "      <td>-72.602192</td>\n",
       "      <td>40.002372</td>\n",
       "      <td>-72.594838</td>\n",
       "      <td>40.002052</td>\n",
       "      <td>1.650056</td>\n",
       "      <td>2.856395</td>\n",
       "      <td>0.226428</td>\n",
       "      <td>11.109446</td>\n",
       "      <td>13.217078</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>std</td>\n",
       "      <td>9.982373</td>\n",
       "      <td>5.474670</td>\n",
       "      <td>10.004324</td>\n",
       "      <td>5.474648</td>\n",
       "      <td>1.283577</td>\n",
       "      <td>3.322024</td>\n",
       "      <td>1.135934</td>\n",
       "      <td>9.137710</td>\n",
       "      <td>10.953156</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>min</td>\n",
       "      <td>-74.258183</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-74.260472</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.010000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>2.500000</td>\n",
       "      <td>2.500000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>25%</td>\n",
       "      <td>-73.992153</td>\n",
       "      <td>40.735936</td>\n",
       "      <td>-73.991566</td>\n",
       "      <td>40.734310</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.040000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>6.000000</td>\n",
       "      <td>7.300000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>50%</td>\n",
       "      <td>-73.981851</td>\n",
       "      <td>40.753264</td>\n",
       "      <td>-73.980373</td>\n",
       "      <td>40.752956</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.770000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>8.500000</td>\n",
       "      <td>10.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>75%</td>\n",
       "      <td>-73.967400</td>\n",
       "      <td>40.767340</td>\n",
       "      <td>-73.964142</td>\n",
       "      <td>40.767510</td>\n",
       "      <td>2.000000</td>\n",
       "      <td>3.160000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>12.500000</td>\n",
       "      <td>14.600000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>max</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>41.366138</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>41.366138</td>\n",
       "      <td>6.000000</td>\n",
       "      <td>42.800000</td>\n",
       "      <td>16.000000</td>\n",
       "      <td>179.000000</td>\n",
       "      <td>179.000000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "       pickup_longitude  pickup_latitude  dropoff_longitude  dropoff_latitude  \\\n",
       "count      10716.000000     10716.000000       10716.000000      10716.000000   \n",
       "mean         -72.602192        40.002372         -72.594838         40.002052   \n",
       "std            9.982373         5.474670          10.004324          5.474648   \n",
       "min          -74.258183         0.000000         -74.260472          0.000000   \n",
       "25%          -73.992153        40.735936         -73.991566         40.734310   \n",
       "50%          -73.981851        40.753264         -73.980373         40.752956   \n",
       "75%          -73.967400        40.767340         -73.964142         40.767510   \n",
       "max            0.000000        41.366138           0.000000         41.366138   \n",
       "\n",
       "       passenger_count  trip_distance  tolls_amount   fare_amount  \\\n",
       "count     10716.000000   10716.000000  10716.000000  10716.000000   \n",
       "mean          1.650056       2.856395      0.226428     11.109446   \n",
       "std           1.283577       3.322024      1.135934      9.137710   \n",
       "min           0.000000       0.010000      0.000000      2.500000   \n",
       "25%           1.000000       1.040000      0.000000      6.000000   \n",
       "50%           1.000000       1.770000      0.000000      8.500000   \n",
       "75%           2.000000       3.160000      0.000000     12.500000   \n",
       "max           6.000000      42.800000     16.000000    179.000000   \n",
       "\n",
       "       total_amount  \n",
       "count  10716.000000  \n",
       "mean      13.217078  \n",
       "std       10.953156  \n",
       "min        2.500000  \n",
       "25%        7.300000  \n",
       "50%       10.000000  \n",
       "75%       14.600000  \n",
       "max      179.000000  "
      ]
     },
     "execution_count": 38,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "trips.describe()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Hmm ... The min, max of longitude look strange.\n",
    "\n",
    "Finally, let's actually look at the start and end of a few of the trips."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 720x576 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "def showrides(df, numlines):\n",
    "  lats = []\n",
    "  lons = []\n",
    "  for iter, row in df[:numlines].iterrows():\n",
    "    lons.append(row['pickup_longitude'])\n",
    "    lons.append(row['dropoff_longitude'])\n",
    "    lons.append(None)\n",
    "    lats.append(row['pickup_latitude'])\n",
    "    lats.append(row['dropoff_latitude'])\n",
    "    lats.append(None)\n",
    "\n",
    "  sns.set_style(\"darkgrid\")\n",
    "  plt.figure(figsize=(10,8))\n",
    "  plt.plot(lons, lats)\n",
    "\n",
    "showrides(trips, 10)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 720x576 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "showrides(tollrides, 10)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "As you'd expect, rides that involve a toll are longer than the typical ride."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<h3> Quality control and other preprocessing </h3>\n",
    "\n",
    "We need to do some clean-up of the data:\n",
    "<ol>\n",
    "<li>New York city longitudes are around -74 and latitudes are around 41.</li>\n",
    "<li>We shouldn't have zero passengers.</li>\n",
    "<li>Clean up the total_amount column to reflect only fare_amount and tolls_amount, and then remove those two columns.</li>\n",
    "<li>Before the ride starts, we'll know the pickup and dropoff locations, but not the trip distance (that depends on the route taken), so remove it from the ML dataset</li>\n",
    "<li>Discard the timestamp</li>\n",
    "</ol>\n",
    "\n",
    "We could do preprocessing in BigQuery, similar to how we removed the zero-distance rides, but just to show you another option, let's do this in Python.  In production, we'll have to carry out the same preprocessing on the real-time input data. \n",
    "\n",
    "This sort of preprocessing of input data is quite common in ML, especially if the quality-control is dynamic."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>pickup_longitude</th>\n",
       "      <th>pickup_latitude</th>\n",
       "      <th>dropoff_longitude</th>\n",
       "      <th>dropoff_latitude</th>\n",
       "      <th>passenger_count</th>\n",
       "      <th>fare_amount</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td>count</td>\n",
       "      <td>10476.000000</td>\n",
       "      <td>10476.000000</td>\n",
       "      <td>10476.000000</td>\n",
       "      <td>10476.000000</td>\n",
       "      <td>10476.000000</td>\n",
       "      <td>10476.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>mean</td>\n",
       "      <td>-73.975206</td>\n",
       "      <td>40.751526</td>\n",
       "      <td>-73.974373</td>\n",
       "      <td>40.751199</td>\n",
       "      <td>1.653303</td>\n",
       "      <td>11.349003</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>std</td>\n",
       "      <td>0.038547</td>\n",
       "      <td>0.029187</td>\n",
       "      <td>0.039086</td>\n",
       "      <td>0.033147</td>\n",
       "      <td>1.278827</td>\n",
       "      <td>9.878630</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>min</td>\n",
       "      <td>-74.258183</td>\n",
       "      <td>40.452290</td>\n",
       "      <td>-74.260472</td>\n",
       "      <td>40.417750</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>2.500000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>25%</td>\n",
       "      <td>-73.992336</td>\n",
       "      <td>40.737600</td>\n",
       "      <td>-73.991739</td>\n",
       "      <td>40.735904</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>6.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>50%</td>\n",
       "      <td>-73.982090</td>\n",
       "      <td>40.754020</td>\n",
       "      <td>-73.980780</td>\n",
       "      <td>40.753597</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>8.500000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>75%</td>\n",
       "      <td>-73.968517</td>\n",
       "      <td>40.767774</td>\n",
       "      <td>-73.965851</td>\n",
       "      <td>40.767921</td>\n",
       "      <td>2.000000</td>\n",
       "      <td>12.500000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>max</td>\n",
       "      <td>-73.137393</td>\n",
       "      <td>41.366138</td>\n",
       "      <td>-73.137393</td>\n",
       "      <td>41.366138</td>\n",
       "      <td>6.000000</td>\n",
       "      <td>179.000000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "       pickup_longitude  pickup_latitude  dropoff_longitude  dropoff_latitude  \\\n",
       "count      10476.000000     10476.000000       10476.000000      10476.000000   \n",
       "mean         -73.975206        40.751526         -73.974373         40.751199   \n",
       "std            0.038547         0.029187           0.039086          0.033147   \n",
       "min          -74.258183        40.452290         -74.260472         40.417750   \n",
       "25%          -73.992336        40.737600         -73.991739         40.735904   \n",
       "50%          -73.982090        40.754020         -73.980780         40.753597   \n",
       "75%          -73.968517        40.767774         -73.965851         40.767921   \n",
       "max          -73.137393        41.366138         -73.137393         41.366138   \n",
       "\n",
       "       passenger_count   fare_amount  \n",
       "count     10476.000000  10476.000000  \n",
       "mean          1.653303     11.349003  \n",
       "std           1.278827      9.878630  \n",
       "min           1.000000      2.500000  \n",
       "25%           1.000000      6.000000  \n",
       "50%           1.000000      8.500000  \n",
       "75%           2.000000     12.500000  \n",
       "max           6.000000    179.000000  "
      ]
     },
     "execution_count": 41,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "def preprocess(trips_in):\n",
    "  trips = trips_in.copy(deep=True)\n",
    "  trips.fare_amount = trips.fare_amount + trips.tolls_amount\n",
    "  del trips['tolls_amount']\n",
    "  del trips['total_amount']\n",
    "  del trips['trip_distance'] # we won't know this in advance!\n",
    "\n",
    "  qc = np.all([\\\n",
    "             trips['pickup_longitude'] > -78, \\\n",
    "             trips['pickup_longitude'] < -70, \\\n",
    "             trips['dropoff_longitude'] > -78, \\\n",
    "             trips['dropoff_longitude'] < -70, \\\n",
    "             trips['pickup_latitude'] > 37, \\\n",
    "             trips['pickup_latitude'] < 45, \\\n",
    "             trips['dropoff_latitude'] > 37, \\\n",
    "             trips['dropoff_latitude'] < 45, \\\n",
    "             trips['passenger_count'] > 0,\n",
    "            ], axis=0)\n",
    "  return trips[qc]\n",
    "\n",
    "tripsqc = preprocess(trips)\n",
    "tripsqc.describe()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The quality control has removed about 300 rows (11400 - 11101) or about 3% of the data. This seems reasonable.\n",
    "\n",
    "Let's move on to creating the ML datasets.\n",
    "\n",
    "<h3> Create ML datasets </h3>\n",
    "\n",
    "Let's split the QCed data randomly into training, validation and test sets.\n",
    "Note that this is not the entire data. We have 1 billion taxicab rides. This is just splitting the 10,000 rides to show you how it's done on smaller datasets. In reality, we'll have to do it on all 1 billion rides and this won't scale."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "metadata": {},
   "outputs": [],
   "source": [
    "shuffled = tripsqc.sample(frac=1)\n",
    "trainsize = int(len(shuffled['fare_amount']) * 0.70)\n",
    "validsize = int(len(shuffled['fare_amount']) * 0.15)\n",
    "\n",
    "df_train = shuffled.iloc[:trainsize, :]\n",
    "df_valid = shuffled.iloc[trainsize:(trainsize+validsize), :]\n",
    "df_test = shuffled.iloc[(trainsize+validsize):, :]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>pickup_datetime</th>\n",
       "      <th>pickup_longitude</th>\n",
       "      <th>pickup_latitude</th>\n",
       "      <th>dropoff_longitude</th>\n",
       "      <th>dropoff_latitude</th>\n",
       "      <th>passenger_count</th>\n",
       "      <th>fare_amount</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td>4865</td>\n",
       "      <td>2014-10-06 15:16:00 UTC</td>\n",
       "      <td>-73.9814</td>\n",
       "      <td>40.780672</td>\n",
       "      <td>-73.970012</td>\n",
       "      <td>40.799602</td>\n",
       "      <td>1</td>\n",
       "      <td>9.5</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "              pickup_datetime  pickup_longitude  pickup_latitude  \\\n",
       "4865  2014-10-06 15:16:00 UTC          -73.9814        40.780672   \n",
       "\n",
       "      dropoff_longitude  dropoff_latitude  passenger_count  fare_amount  \n",
       "4865         -73.970012         40.799602                1          9.5  "
      ]
     },
     "execution_count": 43,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df_train.head(n=1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>pickup_longitude</th>\n",
       "      <th>pickup_latitude</th>\n",
       "      <th>dropoff_longitude</th>\n",
       "      <th>dropoff_latitude</th>\n",
       "      <th>passenger_count</th>\n",
       "      <th>fare_amount</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td>count</td>\n",
       "      <td>7333.000000</td>\n",
       "      <td>7333.000000</td>\n",
       "      <td>7333.000000</td>\n",
       "      <td>7333.000000</td>\n",
       "      <td>7333.000000</td>\n",
       "      <td>7333.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>mean</td>\n",
       "      <td>-73.974856</td>\n",
       "      <td>40.751604</td>\n",
       "      <td>-73.974029</td>\n",
       "      <td>40.750912</td>\n",
       "      <td>1.659212</td>\n",
       "      <td>11.426602</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>std</td>\n",
       "      <td>0.039251</td>\n",
       "      <td>0.029251</td>\n",
       "      <td>0.039930</td>\n",
       "      <td>0.033525</td>\n",
       "      <td>1.288317</td>\n",
       "      <td>10.012522</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>min</td>\n",
       "      <td>-74.258183</td>\n",
       "      <td>40.452290</td>\n",
       "      <td>-74.260472</td>\n",
       "      <td>40.417750</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>2.500000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>25%</td>\n",
       "      <td>-73.992120</td>\n",
       "      <td>40.737924</td>\n",
       "      <td>-73.991730</td>\n",
       "      <td>40.735762</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>6.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>50%</td>\n",
       "      <td>-73.982015</td>\n",
       "      <td>40.754162</td>\n",
       "      <td>-73.980750</td>\n",
       "      <td>40.753592</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>8.500000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>75%</td>\n",
       "      <td>-73.968244</td>\n",
       "      <td>40.767812</td>\n",
       "      <td>-73.965692</td>\n",
       "      <td>40.767822</td>\n",
       "      <td>2.000000</td>\n",
       "      <td>12.500000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>max</td>\n",
       "      <td>-73.137393</td>\n",
       "      <td>41.366138</td>\n",
       "      <td>-73.137393</td>\n",
       "      <td>41.366138</td>\n",
       "      <td>6.000000</td>\n",
       "      <td>179.000000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "       pickup_longitude  pickup_latitude  dropoff_longitude  dropoff_latitude  \\\n",
       "count       7333.000000      7333.000000        7333.000000       7333.000000   \n",
       "mean         -73.974856        40.751604         -73.974029         40.750912   \n",
       "std            0.039251         0.029251           0.039930          0.033525   \n",
       "min          -74.258183        40.452290         -74.260472         40.417750   \n",
       "25%          -73.992120        40.737924         -73.991730         40.735762   \n",
       "50%          -73.982015        40.754162         -73.980750         40.753592   \n",
       "75%          -73.968244        40.767812         -73.965692         40.767822   \n",
       "max          -73.137393        41.366138         -73.137393         41.366138   \n",
       "\n",
       "       passenger_count  fare_amount  \n",
       "count      7333.000000  7333.000000  \n",
       "mean          1.659212    11.426602  \n",
       "std           1.288317    10.012522  \n",
       "min           1.000000     2.500000  \n",
       "25%           1.000000     6.000000  \n",
       "50%           1.000000     8.500000  \n",
       "75%           2.000000    12.500000  \n",
       "max           6.000000   179.000000  "
      ]
     },
     "execution_count": 44,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df_train.describe()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>pickup_longitude</th>\n",
       "      <th>pickup_latitude</th>\n",
       "      <th>dropoff_longitude</th>\n",
       "      <th>dropoff_latitude</th>\n",
       "      <th>passenger_count</th>\n",
       "      <th>fare_amount</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td>count</td>\n",
       "      <td>1571.000000</td>\n",
       "      <td>1571.000000</td>\n",
       "      <td>1571.000000</td>\n",
       "      <td>1571.000000</td>\n",
       "      <td>1571.000000</td>\n",
       "      <td>1571.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>mean</td>\n",
       "      <td>-73.977397</td>\n",
       "      <td>40.751450</td>\n",
       "      <td>-73.975086</td>\n",
       "      <td>40.751184</td>\n",
       "      <td>1.648631</td>\n",
       "      <td>11.017944</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>std</td>\n",
       "      <td>0.031180</td>\n",
       "      <td>0.026329</td>\n",
       "      <td>0.036422</td>\n",
       "      <td>0.030365</td>\n",
       "      <td>1.247684</td>\n",
       "      <td>9.217517</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>min</td>\n",
       "      <td>-74.116582</td>\n",
       "      <td>40.633522</td>\n",
       "      <td>-74.181462</td>\n",
       "      <td>40.561076</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>2.500000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>25%</td>\n",
       "      <td>-73.992930</td>\n",
       "      <td>40.737249</td>\n",
       "      <td>-73.991771</td>\n",
       "      <td>40.735172</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>6.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>50%</td>\n",
       "      <td>-73.982255</td>\n",
       "      <td>40.754492</td>\n",
       "      <td>-73.980992</td>\n",
       "      <td>40.753299</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>8.500000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>75%</td>\n",
       "      <td>-73.969642</td>\n",
       "      <td>40.767392</td>\n",
       "      <td>-73.967381</td>\n",
       "      <td>40.767741</td>\n",
       "      <td>2.000000</td>\n",
       "      <td>12.100000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>max</td>\n",
       "      <td>-73.776767</td>\n",
       "      <td>40.933269</td>\n",
       "      <td>-73.714585</td>\n",
       "      <td>41.001380</td>\n",
       "      <td>6.000000</td>\n",
       "      <td>90.500000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "       pickup_longitude  pickup_latitude  dropoff_longitude  dropoff_latitude  \\\n",
       "count       1571.000000      1571.000000        1571.000000       1571.000000   \n",
       "mean         -73.977397        40.751450         -73.975086         40.751184   \n",
       "std            0.031180         0.026329           0.036422          0.030365   \n",
       "min          -74.116582        40.633522         -74.181462         40.561076   \n",
       "25%          -73.992930        40.737249         -73.991771         40.735172   \n",
       "50%          -73.982255        40.754492         -73.980992         40.753299   \n",
       "75%          -73.969642        40.767392         -73.967381         40.767741   \n",
       "max          -73.776767        40.933269         -73.714585         41.001380   \n",
       "\n",
       "       passenger_count  fare_amount  \n",
       "count      1571.000000  1571.000000  \n",
       "mean          1.648631    11.017944  \n",
       "std           1.247684     9.217517  \n",
       "min           1.000000     2.500000  \n",
       "25%           1.000000     6.000000  \n",
       "50%           1.000000     8.500000  \n",
       "75%           2.000000    12.100000  \n",
       "max           6.000000    90.500000  "
      ]
     },
     "execution_count": 45,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df_valid.describe()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>pickup_longitude</th>\n",
       "      <th>pickup_latitude</th>\n",
       "      <th>dropoff_longitude</th>\n",
       "      <th>dropoff_latitude</th>\n",
       "      <th>passenger_count</th>\n",
       "      <th>fare_amount</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td>count</td>\n",
       "      <td>1572.000000</td>\n",
       "      <td>1572.000000</td>\n",
       "      <td>1572.000000</td>\n",
       "      <td>1572.000000</td>\n",
       "      <td>1572.000000</td>\n",
       "      <td>1572.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>mean</td>\n",
       "      <td>-73.974651</td>\n",
       "      <td>40.751236</td>\n",
       "      <td>-73.975268</td>\n",
       "      <td>40.752549</td>\n",
       "      <td>1.630407</td>\n",
       "      <td>11.317875</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>std</td>\n",
       "      <td>0.041714</td>\n",
       "      <td>0.031528</td>\n",
       "      <td>0.037650</td>\n",
       "      <td>0.034015</td>\n",
       "      <td>1.265582</td>\n",
       "      <td>9.887354</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>min</td>\n",
       "      <td>-74.038562</td>\n",
       "      <td>40.608573</td>\n",
       "      <td>-74.182480</td>\n",
       "      <td>40.605517</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>2.500000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>25%</td>\n",
       "      <td>-73.992822</td>\n",
       "      <td>40.736044</td>\n",
       "      <td>-73.991702</td>\n",
       "      <td>40.737089</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>6.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>50%</td>\n",
       "      <td>-73.982298</td>\n",
       "      <td>40.753030</td>\n",
       "      <td>-73.980733</td>\n",
       "      <td>40.754484</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>8.500000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>75%</td>\n",
       "      <td>-73.968611</td>\n",
       "      <td>40.767864</td>\n",
       "      <td>-73.965267</td>\n",
       "      <td>40.768526</td>\n",
       "      <td>2.000000</td>\n",
       "      <td>12.500000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>max</td>\n",
       "      <td>-73.137393</td>\n",
       "      <td>41.366138</td>\n",
       "      <td>-73.137393</td>\n",
       "      <td>41.366138</td>\n",
       "      <td>6.000000</td>\n",
       "      <td>99.300000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "       pickup_longitude  pickup_latitude  dropoff_longitude  dropoff_latitude  \\\n",
       "count       1572.000000      1572.000000        1572.000000       1572.000000   \n",
       "mean         -73.974651        40.751236         -73.975268         40.752549   \n",
       "std            0.041714         0.031528           0.037650          0.034015   \n",
       "min          -74.038562        40.608573         -74.182480         40.605517   \n",
       "25%          -73.992822        40.736044         -73.991702         40.737089   \n",
       "50%          -73.982298        40.753030         -73.980733         40.754484   \n",
       "75%          -73.968611        40.767864         -73.965267         40.768526   \n",
       "max          -73.137393        41.366138         -73.137393         41.366138   \n",
       "\n",
       "       passenger_count  fare_amount  \n",
       "count      1572.000000  1572.000000  \n",
       "mean          1.630407    11.317875  \n",
       "std           1.265582     9.887354  \n",
       "min           1.000000     2.500000  \n",
       "25%           1.000000     6.000000  \n",
       "50%           1.000000     8.500000  \n",
       "75%           2.000000    12.500000  \n",
       "max           6.000000    99.300000  "
      ]
     },
     "execution_count": 46,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df_test.describe()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Let's write out the three dataframes to appropriately named csv files. We can use these csv files for local training (recall that these files represent only 1/100,000 of the full dataset) just to verify our code works, before we run it on all the data."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "['fare_amount', 'pickup_datetime', 'pickup_longitude', 'pickup_latitude', 'dropoff_longitude', 'dropoff_latitude', 'passenger_count', 'key']\n",
      "['fare_amount', 'pickup_datetime', 'pickup_longitude', 'pickup_latitude', 'dropoff_longitude', 'dropoff_latitude', 'passenger_count', 'key']\n",
      "['fare_amount', 'pickup_datetime', 'pickup_longitude', 'pickup_latitude', 'dropoff_longitude', 'dropoff_latitude', 'passenger_count', 'key']\n"
     ]
    }
   ],
   "source": [
    "def to_csv(df, filename):\n",
    "  outdf = df.copy(deep=False)\n",
    "  outdf.loc[:, 'key'] = np.arange(0, len(outdf)) # rownumber as key\n",
    "  # reorder columns so that target is first column\n",
    "  cols = outdf.columns.tolist()\n",
    "  cols.remove('fare_amount')\n",
    "  cols.insert(0, 'fare_amount')\n",
    "  print (cols)  # new order of columns\n",
    "  outdf = outdf[cols]\n",
    "  outdf.to_csv(filename, header=False, index_label=False, index=False)\n",
    "\n",
    "to_csv(df_train, 'taxi-train.csv')\n",
    "to_csv(df_valid, 'taxi-valid.csv')\n",
    "to_csv(df_test, 'taxi-test.csv')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 48,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "6.9,2011-12-03 10:28:00 UTC,-73.992277,40.745895,-73.997132,40.726232,2,0\n",
      "8.5,2012-06-14 22:23:53 UTC,-74.00638,40.739418,-74.000155,40.720655,1,1\n",
      "5.0,2013-12-21 06:21:00 UTC,-73.95411,40.787162,-73.952025,40.798075,6,2\n",
      "16.5,2013-10-12 12:59:44 UTC,-73.978163,40.75266,-74.009883,40.710913,1,3\n",
      "8.1,2011-11-05 20:20:05 UTC,-73.986664,40.761251,-73.980885,40.744487,1,4\n",
      "7.3,2011-12-03 10:28:00 UTC,-73.997885,40.765302,-73.973202,40.76458,1,5\n",
      "4.5,2013-07-18 21:49:17 UTC,-73.995649,40.764538,-73.989312,40.768182,2,6\n",
      "8.2,2009-01-08 22:16:40 UTC,-73.995762,40.724454,-73.979795,40.713878,1,7\n",
      "17.3,2009-12-05 20:07:32 UTC,-73.97509,40.787592,-73.974379,40.731952,1,8\n",
      "4.9,2012-07-05 14:18:00 UTC,-73.972698,40.780875,-73.966913,40.772645,5,9\n"
     ]
    }
   ],
   "source": [
    "!head -10 taxi-valid.csv"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<h3> Verify that datasets exist </h3>"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 49,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "-rw-r--r-- 1 jupyter jupyter 122870 Sep 13 19:18 taxi-test.csv\n",
      "-rw-r--r-- 1 jupyter jupyter 580202 Sep 13 19:18 taxi-train.csv\n",
      "-rw-r--r-- 1 jupyter jupyter 122687 Sep 13 19:18 taxi-valid.csv\n"
     ]
    }
   ],
   "source": [
    "!ls -l *.csv"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We have 3 .csv files corresponding to train, valid, test.  The ratio of file-sizes correspond to our split of the data."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 50,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "9.5,2014-10-06 15:16:00 UTC,-73.9814,40.780672,-73.970012,40.799602,1,0\n",
      "5.0,2012-11-19 17:41:00 UTC,-73.97256,40.793927,-73.975763,40.784652,5,1\n",
      "6.9,2012-07-05 14:18:00 UTC,-73.975315,40.777245,-73.968052,40.762517,2,2\n",
      "52.0,2013-08-18 17:30:08 UTC,-73.976114,40.740104,-73.782237,40.644236,1,3\n",
      "6.5,2012-07-19 06:27:00 UTC,-73.99207,40.75016,-73.972102,40.763067,1,4\n",
      "8.0,2012-12-17 13:03:38 UTC,-73.95209,40.766813,-73.970533,40.76401,1,5\n",
      "4.5,2014-03-14 19:56:26 UTC,-73.990244,40.734194,-73.986982,40.729678,1,6\n",
      "10.1,2011-12-08 20:47:17 UTC,-73.98583,40.71929,-73.966385,40.756398,1,7\n",
      "8.5,2013-03-07 14:23:46 UTC,-73.974455,40.741944,-73.993271,40.736473,1,8\n",
      "32.8,2012-11-19 17:41:00 UTC,-73.873167,40.774062,-73.985252,40.744807,2,9\n"
     ]
    }
   ],
   "source": [
    "%%bash\n",
    "head taxi-train.csv"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Looks good! We now have our ML datasets and are ready to train ML models, validate them and evaluate them."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<h3> Benchmark </h3>\n",
    "\n",
    "Before we start building complex ML models, it is a good idea to come up with a very simple model and use that as a benchmark.\n",
    "\n",
    "My model is going to be to simply divide the mean fare_amount by the mean trip_distance to come up with a rate and use that to predict.  Let's compute the RMSE of such a model."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 51,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Rate = $2.596836025212977/km\n",
      "Train RMSE = 8.2334605029378\n",
      "Valid RMSE = 5.689335555737727\n",
      "Test RMSE = 5.9889551857647625\n"
     ]
    }
   ],
   "source": [
    "def distance_between(lat1, lon1, lat2, lon2):\n",
    "  # haversine formula to compute distance \"as the crow flies\".  Taxis can't fly of course.\n",
    "  dist = np.degrees(np.arccos(np.minimum(1,np.sin(np.radians(lat1)) * np.sin(np.radians(lat2)) + np.cos(np.radians(lat1)) * np.cos(np.radians(lat2)) * np.cos(np.radians(lon2 - lon1))))) * 60 * 1.515 * 1.609344\n",
    "  return dist\n",
    "\n",
    "def estimate_distance(df):\n",
    "  return distance_between(df['pickuplat'], df['pickuplon'], df['dropofflat'], df['dropofflon'])\n",
    "\n",
    "def compute_rmse(actual, predicted):\n",
    "  return np.sqrt(np.mean((actual-predicted)**2))\n",
    "\n",
    "def print_rmse(df, rate, name):\n",
    "  print (\"{1} RMSE = {0}\".format(compute_rmse(df['fare_amount'], rate*estimate_distance(df)), name))\n",
    "\n",
    "FEATURES = ['pickuplon','pickuplat','dropofflon','dropofflat','passengers']\n",
    "TARGET = 'fare_amount'\n",
    "columns = list([TARGET])\n",
    "columns.append('pickup_datetime')\n",
    "columns.extend(FEATURES) # in CSV, target is the first column, after the features\n",
    "columns.append('key')\n",
    "df_train = pd.read_csv('taxi-train.csv', header=None, names=columns)\n",
    "df_valid = pd.read_csv('taxi-valid.csv', header=None, names=columns)\n",
    "df_test = pd.read_csv('taxi-test.csv', header=None, names=columns)\n",
    "rate = df_train['fare_amount'].mean() / estimate_distance(df_train).mean()\n",
    "print (\"Rate = ${0}/km\".format(rate))\n",
    "print_rmse(df_train, rate, 'Train')\n",
    "print_rmse(df_valid, rate, 'Valid') \n",
    "print_rmse(df_test, rate, 'Test') "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<h2>Benchmark on same dataset</h2>\n",
    "\n",
    "The RMSE depends on the dataset, and for comparison, we have to evaluate on the same dataset each time. We'll use this query in later labs:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 52,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Final Validation Set RMSE = 8.135336354024826\n"
     ]
    }
   ],
   "source": [
    "validation_query = \"\"\"\n",
    "SELECT\n",
    "  (tolls_amount + fare_amount) AS fare_amount,\n",
    "  pickup_datetime,\n",
    "  pickup_longitude AS pickuplon,\n",
    "  pickup_latitude AS pickuplat,\n",
    "  dropoff_longitude AS dropofflon,\n",
    "  dropoff_latitude AS dropofflat,\n",
    "  passenger_count*1.0 AS passengers,\n",
    "  'unused' AS key\n",
    "FROM `nyc-tlc.yellow.trips`\n",
    "WHERE ABS(MOD(FARM_FINGERPRINT(CAST(pickup_datetime AS STRING)), 10000)) = 2\n",
    "AND\n",
    "  trip_distance > 0\n",
    "  AND fare_amount >= 2.5\n",
    "  AND pickup_longitude > -78\n",
    "  AND pickup_longitude < -70\n",
    "  AND dropoff_longitude > -78\n",
    "  AND dropoff_longitude < -70\n",
    "  AND pickup_latitude > 37\n",
    "  AND pickup_latitude < 45\n",
    "  AND dropoff_latitude > 37\n",
    "  AND dropoff_latitude < 45\n",
    "  AND passenger_count > 0\n",
    "  \"\"\"\n",
    "\n",
    "client = bigquery.Client()\n",
    "df_valid = client.query(validation_query).to_dataframe()\n",
    "print_rmse(df_valid, 2.59988, 'Final Validation Set')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The simple distance-based rule gives us a RMSE of <b>$8.14</b>.  We have to beat this, of course, but you will find that simple rules of thumb like this can be surprisingly difficult to beat.\n",
    "\n",
    "Let's be ambitious, though, and make our goal to build ML models that have a RMSE of less than $6 on the test set."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Copyright 2020 Google Inc.\n",
    "Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\n",
    "http://www.apache.org/licenses/LICENSE-2.0\n",
    "Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License."
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
